package com.glfx.controller;

import com.github.houbb.opencc4j.util.ZhConverterUtil;
import com.glfx.utils.FileUtils;
import com.glfx.utils.TxTFileReader;

import java.io.File;
import java.util.List;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Collectors;

/**
 * 文件名的批量处理
 * 1.去掉特殊名词，如网址
 * 指定后缀文件删除
 * 1.只留下视频文件，和对应的文件名
 *
 * @author 柧麟浮休
 * @date 2022/7/25
 */
public class FileNameSimpleDealController {


    public static void deal(String path) {
        //文件名去除集合
        List<String> txTContent = TxTFileReader.getTxTContent();

        //得到指定目录的所有文件
        List<String> fileUrlList = FileUtils.getFileUrlList(path, null);

        //原版的集合
        fileUrlList = fileUrlList.stream().filter(s -> {
            //过滤
            File dealFile = new File(s);
            if (!s.contains("mp4")
                    && !s.contains("avi")
                    && !s.contains("rmvb")
                    && !s.contains("mkv")
                    && !s.contains("ssa")) {
                System.out.println("删除文件名 : " + s);
                    dealFile.delete();
                return false;
            }
            return true;
        }).collect(Collectors.toList());
        List<String> modifyList = fileUrlList.stream().map(s -> {
                    //字符处理
                    if (txTContent != null) {
                        for (String str : txTContent) {
                            s = s.replace(str, "");
                        }
                    }
                    return ZhConverterUtil.toSimple(s).trim().replace("  ","");
                })
                .collect(Collectors.toList());

        if (fileUrlList.size() != modifyList.size()) {
            return;
        }
        for (int i = 0; i < fileUrlList.size(); i++) {
            String org = fileUrlList.get(i);
            File orgFile = new File(org);

            String modify = modifyList.get(i).trim();
            File modifyFile = new File(modify);

            System.out.println("源文件 : " + org);
            System.out.println("修改文件 : " + modify);
            FileUtils.modifyFileName(orgFile.getParent(), modifyFile.getParent());
            FileUtils.modifyFileName(org, modify);
            if (i == 30) {
                break;
            }
        }
    }

    public static void main(String[] args) {
        deal("F:\\lipan\\2009");
    }
}
